home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 2: CDPD 1
/
Almathera Ten on Ten - Disc 2: CDPD 1.iso
/
pd
/
201-225
/
225
/
amigatcp
/
src
/
netuser.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-13
|
1KB
|
75 lines
/* Miscellaneous format conversion subroutines */
#include "machdep.h"
#include "netuser.h"
int net_error;
/* Convert Internet address in dotted-decimal format (44.0.0.1) to binary */
int32
aton(s)
char *s;
{
int32 n;
int atoi(),i;
char *index();
n = 0;
for(i=24;i>=0;i -= 8){
n |= (int32)atoi(s) << i;
if((s = index(s,'.')) == NULLCHAR)
break;
s++;
}
return n;
}
/* Convert an internet address (in host byte order) to a dotted decimal ascii
* string, e.g., 255.255.255.255\0
*/
char *
inet_ntoa(a)
int32 a;
{
static char buf[16];
sprintf(buf,"%u.%u.%u.%u",
hibyte(hiword(a)),
lobyte(hiword(a)),
hibyte(loword(a)),
lobyte(loword(a)) );
return buf;
}
/* Convert a socket (address + port) to an ascii string of the form
* aaa.aaa.aaa.aaa:ppppp
*/
char *
psocket(s)
struct socket *s;
{
static char buf[30];
sprintf(buf,"%s:%u",inet_ntoa(s->address),s->port);
return buf;
}
/* Convert hex-ascii string to long integer */
long
htol(s)
char *s;
{
long ret;
char c;
ret = 0;
while((c = *s++) != '\0'){
c &= 0x7f;
if(c >= '0' && c <= '9')
ret = ret*16 + (c - '0');
else if(c >= 'a' && c <= 'f')
ret = ret*16 + (10 + c - 'a');
else if(c >= 'A' && c <= 'F')
ret = ret*16 + (10 + c - 'A');
else
break;
}
return ret;
}